import HTTP from './http'
import store from 'store/index'

class AuthModule extends HTTP {

  async login(options) {
    if (!options.number || !options.password) {
      throw new Error('用户名和密码不能为空')
    }
    const res = await this.request({
      url: '/after/user/login',
      data: { ...options },
      method: 'POST'
    })
    if (res.code == 0) store.loginInfo.commit('setToken', res.token)
    return res
  }

  async getUsetInfo() {
    const res = await this.request({
      url: '/after/sys/getUser',
      method: 'POST'
    })

    if (res.code == 0) {
      store.loginInfo.commit('setUserInfo', res.data)
      return res.data
    }
  }


  /** 注册  手机号或邮箱号
  *@param {object} options  统一入口
  *@param {string} phone  手机号 与邮箱二选一
  *@param {string} email  邮箱 与手机号二选一
  *@param {string} password  明文密码  必填
  *@param {string} code  验证码,手机验证码/邮箱验证码  必填
  *@param {string} inviteCode 邀请码
  *@return {string} 成功返回token 并登录，失败返回失败信息
 */
  async register(options) {
    if (!(options.phone || options.email)) {
      throw new Error('手机号与邮箱必须有一个')
    }

    if (!options.password || !options.code) {
      throw new Error('密码和验证码为必填项')
    }

    const res = await this.request({
      url: '/after/user/register',
      data: { ...options },
      method: 'POST'
    })

    if (res.code == 0) {
      return store.loginInfo.commit('setToken', res.token)
    }
    alert(res.msg)
    return res.msg
  }

  /** 发送 手机或者邮箱 验证码
  *@param {object} options  统一入口
  *@param {string} phone  手机号 与邮箱二选一
  *@param {string} email  邮箱 与手机号二选一
  *@return {string} 返回值说明
   */
  async sendCode(options) {
    if (!(options.phone || options.email)) {
      throw new Error('手机号与邮箱必须有一个')
    }

    return await this.request({
      url: '/after/user/sendCode',
      data: { ...options },
      method: 'POST'
    })
  }

  /**重置用户密码
  *@param {object} options  统一入口
  *@param {string} phone  手机号 与邮箱二选一
  *@param {string} email  邮箱 与手机号二选一
  *@param {string} password  明文密码  必填
  *@param {string} code  验证码,手机验证码/邮箱验证码  必填
  *@return {string} 成功返回成功或者失败
  */
  async resetPassword(options) {
    if (!(options.phone || options.email)) {
      throw new Error('手机号与邮箱必须有一个')
    }

    if (!options.password || !options.code) {
      throw new Error('密码和验证码为必填项')
    }
    const res = await this.request({
      url: '/after/user/resetPwd',
      data: { ...options },
      method: 'POST'
    })

    return res
  }
}

export default AuthModule